package com.br.negocio.controller;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.br.negocio.dao.CorDAO;
import com.br.negocio.vo.CorVO;

@Service("controllerCor")
public class ControllerCor {

	@Resource
	private CorDAO corDAO;
	
	public void atualizarCor(CorVO corVO) {
		
		if (corVO == null) {
			throw new IllegalArgumentException("uma cor valida e obrigat�rio.");
		}
		
		if ((corVO.getDescricao() == null) ||
			(corVO.getDescricao().trim().equals(""))) {
			throw new IllegalArgumentException("Uma descricaoo e necessaria para o cor.");
		}
		
		if ((!corDAO.validaDuplicado(corVO)) &&
			(corVO.getCodigo() == 0)) {
			throw new IllegalArgumentException("Esta cor ja existe.");
		}

		if (corVO.getCodigo() == 0) {
			corVO.setDataCriacao(new Date());
			corVO.setDataAlteracao(new Date());
			corDAO.inserirCor(corVO);
		} else {
			corVO.setDataAlteracao(new Date());
			corDAO.atualizarCor(corVO);
		}
	}

	public void removerCor(CorVO corVO) {
		
		if (corVO == null) {
			throw new IllegalArgumentException("Um cor valido e obrigatorio.");
		}
		
		if (corVO.getCodigo() == 0) {
			throw new IllegalStateException("A entidade tem um codigo invalido: " + corVO.getDescricao());
		}
		
		corDAO.removerCor(corVO);
	}

	public CorVO obterCor(CorVO corVO) {
		
		if (corVO == null) {
			throw new IllegalArgumentException("Uma cor valida e obrigatorio.");
		}

		return corDAO.obterCor(corVO);
	}
	
	public ArrayList<CorVO> obterListaCorPdf() {

		return (ArrayList<CorVO>) corDAO.obterListaCorPdf();
	}

	public List<CorVO> obterListaCor() {
		return corDAO.obterListaCor();
	}
	
}